\relax 
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax 
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{4}{chapter.1}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{intro}{{1}{4}{Introduction\relax }{chapter.1}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Requirements}{6}{chapter.2}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{req}{{2}{6}{Requirements\relax }{chapter.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Problem definition \& analysis}{6}{section.2.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces Colloquy ``New Connection'' window}}{7}{figure.2.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces Colloquy chatroom window}}{8}{figure.2.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.3}{\ignorespaces Microsoft Messenger ``Contacts'' window}}{8}{figure.2.3}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.4}{\ignorespaces Microsoft Messenger conversation window}}{9}{figure.2.4}}
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Features}{9}{section.2.2}}
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Summary}{13}{section.2.3}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}System Architecture}{14}{chapter.3}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{req}{{3}{14}{System Architecture\relax }{chapter.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Choosing an architecture}{14}{section.3.1}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Summary}{15}{section.3.2}}
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Protocol}{16}{chapter.4}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{protocol}{{4}{16}{Protocol\relax }{chapter.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Syntax}{16}{section.4.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces  Diagram of an example message exchange. \textbf  {Note:} usernames are in email format. This is shown as u[number] for brevity.}}{17}{figure.4.1}}
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Semantics}{18}{section.4.2}}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Error Handling}{19}{section.4.3}}
\@writefile{toc}{\contentsline {section}{\numberline {4.4}Interaction}{19}{section.4.4}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces Interaction between client and server}}{20}{figure.4.2}}
\@writefile{toc}{\contentsline {section}{\numberline {4.5}Channels}{20}{section.4.5}}
\@writefile{toc}{\contentsline {section}{\numberline {4.6}Evolution}{20}{section.4.6}}
\@writefile{toc}{\contentsline {section}{\numberline {4.7}Known Issues}{21}{section.4.7}}
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Client}{22}{chapter.5}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{client}{{5}{22}{Client\relax }{chapter.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Architecture Design}{22}{section.5.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Client MVC architecture}}{23}{figure.5.1}}
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Architecture Review}{24}{section.5.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Client Class Diagram}}{25}{figure.5.2}}
\@writefile{toc}{\contentsline {section}{\numberline {5.3}GUI Design}{26}{section.5.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}Main window}{26}{subsection.5.3.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces GUI wireframe}}{28}{figure.5.3}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.4}{\ignorespaces GUI prototype}}{28}{figure.5.4}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.5}{\ignorespaces Main window (first revision)}}{29}{figure.5.5}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.6}{\ignorespaces Main window (second revision)}}{29}{figure.5.6}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.7}{\ignorespaces Main window (final revision)}}{30}{figure.5.7}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}Registration window}{30}{subsection.5.3.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.8}{\ignorespaces Registration window prototype}}{31}{figure.5.8}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.9}{\ignorespaces Final registration window}}{31}{figure.5.9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.3}Login window}{32}{subsection.5.3.3}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.10}{\ignorespaces Prototype login window}}{32}{figure.5.10}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.4}Other windows}{32}{subsection.5.3.4}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.11}{\ignorespaces Final login window}}{33}{figure.5.11}}
\@writefile{toc}{\contentsline {section}{\numberline {5.4}GUI Implementation}{33}{section.5.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}Problems Encountered}{33}{subsection.5.4.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.12}{\ignorespaces GUI Class Diagram}}{34}{figure.5.12}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}Critical Reflection}{36}{subsection.5.4.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}Known Issues}{36}{subsection.5.4.3}}
\@writefile{toc}{\contentsline {section}{\numberline {5.5}Evaluation}{37}{section.5.5}}
\@writefile{toc}{\contentsline {section}{\numberline {5.6}Summary}{39}{section.5.6}}
\@writefile{toc}{\contentsline {chapter}{\numberline {6}Server}{40}{chapter.6}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{server}{{6}{40}{Server\relax }{chapter.6}{}}
\@writefile{toc}{\contentsline {section}{\numberline {6.1}Design}{40}{section.6.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces Server architecture diagram}}{40}{figure.6.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}Network Controller}{41}{subsection.6.1.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}Client Controller}{41}{subsection.6.1.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.3}Storage}{41}{subsection.6.1.3}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.2}{\ignorespaces SQLController class}}{42}{figure.6.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.4}Models}{42}{subsection.6.1.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.5}Protocol Framework}{43}{subsection.6.1.5}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.3}{\ignorespaces Server class diagram}}{43}{figure.6.3}}
\@writefile{toc}{\contentsline {section}{\numberline {6.2}Implementation}{44}{section.6.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}Threading \& Synchronisation}{45}{subsection.6.2.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}External Libraries}{45}{subsection.6.2.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}Issues}{46}{subsection.6.2.3}}
\@writefile{toc}{\contentsline {section}{\numberline {6.3}Evaluation}{46}{section.6.3}}
\@writefile{toc}{\contentsline {chapter}{\numberline {7}Integration Testing}{48}{chapter.7}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{integrationtest}{{7}{48}{Integration Testing\relax }{chapter.7}{}}
\@writefile{toc}{\contentsline {section}{\numberline {7.1}Strategy}{48}{section.7.1}}
\@writefile{toc}{\contentsline {section}{\numberline {7.2}Results}{48}{section.7.2}}
\@writefile{toc}{\contentsline {section}{\numberline {7.3}Summary}{51}{section.7.3}}
\@writefile{toc}{\contentsline {chapter}{\numberline {8}Conclusion}{52}{chapter.8}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\bibstyle{plain}
\bibdata{example}
\@writefile{toc}{\contentsline {chapter}{\numberline {A}Protocol Specification}{54}{appendix.A}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {A.1}Client Actions (pre-login)}{54}{section.A.1}}
\@writefile{toc}{\contentsline {section}{\numberline {A.2}Client Actions (post-login)}{55}{section.A.2}}
\@writefile{toc}{\contentsline {section}{\numberline {A.3}Client Requests}{58}{section.A.3}}
\@writefile{toc}{\contentsline {section}{\numberline {A.4}Server Actions}{60}{section.A.4}}
\@writefile{toc}{\contentsline {section}{\numberline {A.5}Heartbeat}{61}{section.A.5}}
\@writefile{toc}{\contentsline {chapter}{\numberline {B}Organisation \& Scheduling}{62}{appendix.B}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {B.1}Team Structure}{62}{section.B.1}}
\@writefile{toc}{\contentsline {section}{\numberline {B.2}Schedules}{62}{section.B.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {B.1}{\ignorespaces Schedule}}{62}{figure.B.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {B.2}{\ignorespaces Actual timings}}{63}{figure.B.2}}
\@writefile{toc}{\contentsline {section}{\numberline {B.3}Version Control}{63}{section.B.3}}
\@writefile{toc}{\contentsline {chapter}{\numberline {C}Contributions}{64}{appendix.C}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {chapter}{\numberline {D}Test Scripts}{66}{appendix.D}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {D.1}Server}{66}{section.D.1}}
\@writefile{toc}{\contentsline {section}{\numberline {D.2}Integration}{67}{section.D.2}}
